<!-- This Source Code Form is subject to the terms of the Mozilla Public
   - License, v. 2.0. If a copy of the MPL was not distributed with this
   - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<!DOCTYPE HTML>
<html>
<!--
Test comment-node rep
-->
<head>
  <meta charset="utf-8">
  <title>Rep test - comment-node</title>
  <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
  <link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css">
</head>
<body>
<pre id="test">
<script src="head.js" type="application/javascript;version=1.8"></script>
<script type="application/javascript;version=1.8">
"use strict";

window.onload = Task.async(function* () {
  try {
    let { Rep } = browserRequire("devtools/client/shared/components/reps/rep");
    let { CommentNode } = browserRequire("devtools/client/shared/components/reps/comment-node");

    let gripStub = {
      "type": "object",
      "actor": "server1.conn1.child1/obj47",
      "class": "Comment",
      "extensible": true,
      "frozen": false,
      "sealed": false,
      "ownPropertyLength": 0,
      "preview": {
        "kind": "DOMNode",
        "nodeType": 8,
        "nodeName": "#comment",
        "textContent": "test\nand test\nand test\nand test\nand test\nand test\nand test"
      }
    };

    // Test that correct rep is chosen.
    const renderedRep = shallowRenderComponent(Rep, { object: gripStub });
    is(renderedRep.type, CommentNode.rep,
      `Rep correctly selects ${CommentNode.rep.displayName}`);

    // Test rendering.
    const renderedComponent = renderComponent(CommentNode.rep, { object: gripStub });
    is(renderedComponent.className, "objectBox theme-comment",
      "CommentNode rep has expected class names");
    is(renderedComponent.textContent,
      `<!-- test\nand test\nand test\nan…d test\nand test\nand test -->`,
      "CommentNode rep has expected text content");

    // Test tiny rendering.
    const tinyRenderedComponent = renderComponent(CommentNode.rep, {
      object: gripStub,
      mode: "tiny"
    });
    is(tinyRenderedComponent.textContent,
      `<!-- test\\nand test\\na… test\\nand test -->`,
      "CommentNode rep has expected text content in tiny mode");

    // Test long rendering.
    const longRenderedComponent = renderComponent(CommentNode.rep, {
      object: gripStub,
      mode: "long"
    });
    is(longRenderedComponent.textContent, `<!-- ${gripStub.preview.textContent} -->`,
      "CommentNode rep has expected text content in long mode");
  } catch (e) {
    ok(false, "Got an error: " + DevToolsUtils.safeErrorString(e));
  } finally {
    SimpleTest.finish();
  }
});
</script>
</pre>
</body>
</html>
